package ReflectTest01;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/*
通过反射实现如下操作
   Student s=new Student("姜恒星“，西安);
   System.out.println(s)
 */
public class ReflectDemo01 {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        //得到class对象
        Class<?> c = Class.forName("Reflect.Student");//通过class对象得到c
        //    public Student(String name, int age, String address) {
        // //getConstructor(类<?>... parameterTypes)返回一个 Constructor对象，该对象反映 Constructor对象表示的类的指定的公共 类函数。
        Constructor<?> con = c.getConstructor(String.class, int.class, String.class);//通过getConstructor得到构造方法
        //基本数据类型也可以通过.class得到对应的Class类型！！！
        // //T newInstance(Object... initargs)使用此 Constructor对象表示的构造函数，使用指定的初始化参数来创建和初始化构造函数的声明类的新实例。
        Object obj = con.newInstance("姜恒星", 30, "西安");//用构造方法对象方法调用newInstance方法产生对象
        System.out.println(obj);
    }
}
